# coding: utf8

import lmdb
from caffe.proto import caffe_pb2
import caffe
import numpy as np
import matplotlib.pyplot as plt
import os
# import cv2

lmdb_test_path = r'/Users/wang/soft/caffe/examples/mnist/mnist_test_lmdb'

save_dir = r'/Users/wang/work_code/mnist_image'

# 打开lmdb数据库
env = lmdb.open(lmdb_test_path)
# 获得一个连接（暂时可以县这么理解）
conn = env.begin()
# 获得遍历的游标
cur = conn.cursor()
# 获得caffe封装lmdb的结构
datum = caffe_pb2.Datum()
# 遍历游标
for k, v in cur:
    print k
    # 用caffe的结构加载数据
    datum.ParseFromString(v)
    # 获取原始数据的label
    print datum.label
    # 把datum格式的数据转换成为array格式（np的array）
    data = caffe.io.datum_to_array(datum)
    # 看一下原有的数据的shape（1，28，28）
    print np.shape(data)
    # 把数据reshape成plt可以展示的shape
    data = np.reshape(data, (28, -1))
    # 打印
    print np.shape(data)
    # plt展示
    plt.imshow(data)
    plt.show()
    # plt保存下这个图
    plt.imsave(os.path.join(save_dir, '{}.png'.format(k)), data)

cur.close()
